/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.entidades;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;

/**
 * Representa una palabra clave para la busqueda
 */
@Entity
public class PalabraClave implements Serializable {

    /**
     * palabra clave
     */
    @Id
    private String palabra;
    /**
     * lista de proyectos donde esta la palbra clave.
     */
    @OneToMany
    private Collection<Proyecto> proyectos;

    /**
     * Constructor vacio de palabra clave
     */
    public PalabraClave() {
    }

    /**
     * Devuelve el codigo hash de la clase deacuerdo al id de entregable
     *
     * @return Codigo hash calculado con el id de entregable
     */
    @Override
    public int hashCode() {
        int hash = 3;
        hash = 29 * hash + (this.getPalabra() != null ? this.getPalabra().hashCode() : 0);
        return hash;
    }

    /**
     * Verifica si un objeto es igual a otro. Una palabra es igual a otra si
     * tiene el mismo nombre
     *
     * @param obj Objeto con el cual se quiere comparar
     * @return true si el objeto es una palabra y tiene el mismo nombre
     */
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final PalabraClave other = (PalabraClave) obj;
        if ((this.getPalabra() == null) ? (other.getPalabra() != null) : !this.getPalabra().equals(other.getPalabra())) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return getPalabra();
    }

    /**
     * @return the palabra
     */
    public String getPalabra() {
        return palabra;
    }

    /**
     * @param palabra the palabra to set
     */
    public void setPalabra(String palabra) {
        this.palabra = palabra;
    }

    /**
     * lista de proyectos donde esta la palbra clave.
     * @return the proyectos
     */
    public Collection<Proyecto> getProyectos() {
        return proyectos;
    }

    /**
     * lista de proyectos donde esta la palbra clave.
     * @param proyectos the proyectos to set
     */
    public void setProyectos(Collection<Proyecto> proyectos) {
        this.proyectos = proyectos;
    }




    
}
